A distributed revision control system (DRCS), distributed version control or decentralized version control (DVCS) keeps track of software revisions and allows many developers to work on a given project without necessarily being connected to a common network.
Contents |
Distributed revision control (DRCS) takes a peer-to-peer approach, as opposed to the client-server approach of centralized systems. Rather than a single, central repository on which clients synchronize, each peer's working copy of the codebase is a bona-fide repository.[1] Distributed revision control conducts synchronization by exchanging patches (change-sets) from peer to peer. This results in some important differences from a centralized system:
Rather, communication is only necessary when pushing or pulling changes to or from other peers.
Other differences are as follows:
DVCS proponents point to several advantages of distributed version control systems over the traditional centralised model:
Software development author Joel Spolsky describes distributed version control as "possibly the biggest advance in software development technology in the [past] ten years."[4]
As a disadvantage of DVCS, one could note that initial cloning of a repository is slower compared to centralized checkout, because all branches and revision history are copied. This may be relevant if access speed is low and the project is large enough. For instance, the size of the cloned git repository (all history, branches, tags, etc.) for the Linux kernel is approximately the size of the checked-out uncompressed HEAD, whereas the equivalent checkout of a single branch in a centralized checkout would be the compressed size of the contents of HEAD (except without any history, branches, tags, etc.). Another problem with DVCS is the lack of locking mechanisms that is part of most centralized VCS and still plays an important role when it comes to non-mergable binary files such as graphic assets.
An "open system" of distributed revision control is characterized by its support for independent branches, and its heavy reliance on merge operations. Its general characteristics include:
One of the first open systems, BitKeeper, served in the development of the Linux kernel. When the makers of BitKeeper decided in 2005 to restrict its licensing,[5] Linus Torvalds, looking for a free alternative, finally started developing his own distributed source control management software, Git.
For a list of distributed revision control systems, see the comparison of revision control software.
A replicated system of distributed revision control depends on a replicated database. A check-in is equivalent to a distributed commit. Successful commits create a single baseline, which reduces the need for merges. An example of a replicated distributed system is Code Co-op.
The distributed model is generally better suited for large projects with partly independent developers, such as the Linux kernel project, because developers can work independently and submit their changes for merge (or rejection). The distributed model flexibly allows adopting custom source code contribution workflows, with the integrator workflow being the most widely use one.
In the centralized model, developers should serialize their work, or they may have problems with different versions.
First generation open-source DVCS systems include Arch and Monotone. The second generation was initiated by the arrival of Darcs, followed by a host of others. Among them, Mercurial and Git were created as potential replacements for BitKeeper when it was pulled from free use by the Linux kernel project by its publisher. Bazaar followed not long after.
Before these, closed source DVCS systems such as Sun WorkShop TeamWare (which inspired BitKeeper) were widely used in enterprise settings.
Some natively centralized systems are starting to grow distributed features. For example, Subversion is able to do many operations with no network.[6] It may become more difficult to separate natively distributed vs centralized systems.
There are many tools that rely on version control, such as wikis, file systems, and text editors. Some are starting to adopt DVCS features, and even integrate with them, for example the Gazest wiki, ikiwiki.
|